Pattern Matching
destructuring bind
exhaustiveness
パターンに漏れがある場合はwarning
irredundancy
パターンに重複がある場合はwarning
上にあるものが優先される
いたる所のパターンマッチ
関数定義時
code:hs
eval (Add x y) = x + y
変数宣言時
code:hs
let (a, b, c) = (1, 2, 3)
パターンマッチの種類 ref 『n月刊ラムダノート Vol.1, No.3』.icon p.19
変数パターン
どんな値にでもマッチする
ワイルドカードパターン
タプルパターン
値の要素数違いは型検査器が行う
コンストラクタパターン
https://gyazo.com/d97f95ec4ee7c44141acf6a503841d25
ネストした型のパターンも対応できる
code:ml
datatype stone = Black | White
datatype cell = Empty | Full of stone
fun isSequence s = case s of
(Full Black, Full Black, Full Black) => true
| (Full White, Full White, Full White) => true
| other => false
の実装解説記事
の言語比較
関連
参考
↑の紹介された文献
日本語